import Service from '../../../../../libs/service_0_0_6.js'

/**
 * Класс обработки событий панели.
 */
export default class HarWorker {
    /**
    * Список записей по запросам и ответам
    * @type {object} HAR-архив
    */
    harEntries

    /**
    * Числовой идентификатор таймера для периодического выполнения загрузки HAR-архива
    * @type {number}
    */
    interval

    /**
    * Сформировать строку с данными по текущему архиву: количество записей и время получени
    * @return строка с результатом
    */
    getDataToHarEntries() {
        let count = this.harEntries?.entries.length
        if (count === undefined) {
            count = 0
        }
        return 'Из вкладки Network (Сеть) получено ' + count + ' записей, время обновления: ' + Service.getTimestamp()
    }

    /**
    * Получить список записей по запросам и ответам
    * @return текущие записи
    */
    getHarEntries() {
        return this.harEntries
    }

    /**
    * Указать список записей по запросам и ответам
    * @param {Array.<*>} harEntries список записей
    */
    setHarEntries(harEntries) {
        this.harEntries = harEntries
    }

    /**
    * Получить HAR-архив с текущими записями
    * @return HAR-архив, формируемый из текущих записей
    */
    getHarLog() {
        let harLog = new Object()
        harLog.log = this.harEntries
        return harLog
    }

    /**
    * Загрузить текущий архив в браузере в папку загрузки с указанным именем файла
    * @param {string} filename имя файла
    */
    downloadHarLog(filename) {
        Service.download(filename, Service.JsonStringify(this.getHarLog()))
    }
}